const puppeteer = require('puppeteer');

const url = `https://movie.douban.com/tag/#/?sort=R&range=6,10&tags=`;

const sleep = (time) =>
  new Promise((resolve) => {
    setTimeout(resolve, time);
  });
(async () => {
  console.log('Start visit the target page');

  const browser = await puppeteer.launch({
    args   : [ '--no-sandbox' ],
    dumpio : false
  });

  const page = await browser.newPage();
  await page.goto(url, {
    waitUntil : 'networkidle2'
  });

  await sleep(3000);

  await page.waitForSelector('.more');

  for (let i = 0; i < 1; i++) {
    await sleep(3000);
    await page.click('.more');
  }

  const result = await page.evaluate(() => {
    var $ = window.$;
    var items = $('.list-wp a');
    var links = [];

    if (items.length >= 1) {
      items.each((index, item) => {
        let it = $(item);
        let doubanId = it.find('div').data('id');
        let title = it.find('.title').text();
        let rate = Number(it.find('.rate').text());
        let poster = it.find('img').attr('src').replace('s_ratio', 'l_ratio');

        links.push({
          doubanId,
          title,
          rate,
          poster
        });
      });
    }

    return links;
  });

  browser.close();

  process.send({ result });
  process.exit(0);
})();
